//package com.study.jyg.rxjava2study.widget;
//
//import android.content.Context;
//import android.graphics.Canvas;
//import android.graphics.Color;
//import android.graphics.Paint;
//import android.graphics.Point;
//import android.graphics.Rect;
//import android.util.AttributeSet;
//import android.view.MotionEvent;
//import android.view.View;
//
//import androidx.annotation.Nullable;
//
//import com.study.jyg.rxjava2study.utils.DensityUtil;
//
//import java.util.List;
//
//public class SlideRectChart extends AbsChart {
//
//    private static final String TAG = "SlideRectChart";
//
//    private Point[] mPoints;
//
//    /**柱子的画笔*/
//    private Paint mSlideRectPaint;
//    /**柱子的大小*/
//    private float mRectSize;
//    /**柱子之间的边距*/
//    private float mRectLeft;
//
//    /**右边超出的范围*/
//    private float mRectDrawWidth;
//
//
//    public SlideRectChart(Context context) {
//        this(context, null);
//    }
//
//    public SlideRectChart(Context context, @Nullable AttributeSet attrs) {
//        this(context, attrs, 0);
//    }
//
//    public SlideRectChart(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
//        super(context, attrs, defStyleAttr);
//        init();
//    }
//
//    private void init() {
//        if (mSlideRectPaint == null) {
//            mSlideRectPaint = new Paint();
//        }
//        mSlideRectPaint.setAntiAlias(true);
//        mSlideRectPaint.setStyle(Paint.Style.FILL);
//        mSlideRectPaint.setColor(Color.RED);
//
//    }
//
//    @Override
//    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
//        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
//        mRectSize = getViewWidth() / 24;
//        mRectLeft = DensityUtil.dip2px(4);
//
//    }
//
//    @Override
//    protected void onDraw(Canvas canvas) {
//        super.onDraw(canvas);
//        /**计算最多移动的距离*/
//        mRectDrawWidth=((mRectLeft * mPoints.length) + (mRectSize * mPoints.length + getBrokenLineLeft()-getViewWidth()));
//        DrawRect(canvas);
//    }
//
//    private void DrawRect(Canvas canvas) {
//        for (int i = 0; i < mPoints.length; i++) {
//            Point point = mPoints[i];
//            Rect rect = new Rect();
//            int  left= (int) ((mRectLeft * i) + (mRectSize * i+ getBrokenLineLeft())-mSlideX);
//            int right= ((int) ((mRectLeft * i) + (mRectSize * i + mRectSize+ getBrokenLineLeft()-mSlideX)) );
//
//            if(left<=getBrokenLineLeft()){
//                left= (int) getBrokenLineLeft();
//            }
//            if(right<=getBrokenLineLeft()){
//                right= (int) getBrokenLineLeft();
//            }
//            rect.left =left;
//            rect.right =right;
//            rect.bottom = (int) (getNeedDrawHeight() + getBrokenLineTop());
//            rect.top = point.y;
//            canvas.drawRect(rect, mSlideRectPaint);
//
//            if(left!=right){
//                canvas.drawText(i+"",left+((right-left) /2),mPoints[i].y,getBrokenLineTextPaint());
//            }
//        }
//    }
//
//    private float mSlideX=0;
//    private float mLastDownX;
//    @Override
//    public boolean onTouchEvent(MotionEvent event) {
//
//        switch (event.getAction()) {
//            case MotionEvent.ACTION_DOWN:
//                mLastDownX = event.getX();
//            case MotionEvent.ACTION_UP:
//                mSlideX += (mLastDownX-event.getX());
//                mLastDownX = event.getX();
//
//                if(mSlideX<=0){
//                    mSlideX=0;
//                }
//                if(mSlideX>=mRectDrawWidth){
//                    mSlideX=mRectDrawWidth;
//                }
//                postInvalidate();
//            case MotionEvent.ACTION_MOVE:
//                mSlideX += (mLastDownX-event.getX());
//                mLastDownX = event.getX();
//                if(mSlideX<=0){
//                    mSlideX=0;
//                }
//                if(mSlideX>=mRectDrawWidth){
//                    mSlideX=mRectDrawWidth;
//                }
//                postInvalidate();
//        }
//        return true;
//
//    }
//}
